Enterprises such as corporations typically utilize a cloud computing environment to manage their applications, services and data. One or more cloud platforms that are part of this environment may be within the exclusive control and management of the enterprise, and therefore are considered “private clouds.” On the other hand, the cloud computing environment can include one or more cloud platforms that can be used by multiple enterprises, and not necessarily controlled or managed by any of the multiple enterprises but rather are controlled and managed by one or more third-party cloud providers. Such cloud platforms are typically considered “public clouds.” More typically, enterprises may choose to host their applications, services and data on a combination of private and public clouds that form a multi-cloud computing environment.
Function-as-a-Service or FaaS is a cloud computing service model on a given cloud platform that enables a user to develop, deploy, execute, and otherwise manage application functions without many of the drawbacks of provisioning and maintaining infrastructure associated with development and deployment of a full application program.
Various public cloud providers offer FaaS implementations with their specific cloud platforms, e.g., Lambda® for Amazon Web Services® (AWS) cloud platforms, Firebase® for Google Compute Engine® (GCE) cloud platforms, Azure® Functions for Microsoft® cloud platforms, and Bluemix OpenWhisk® for IBM® cloud platforms. Each such FaaS implementation is designed for exclusive use on a specific public cloud platform with its own dedicated programming language and function definitions, i.e., its own cloud-specific FaaS model. This can provide challenges to developers seeking to deploy application functions in a multi-cloud computing environment. Furthermore, as developers write applications using FaaS models, they experience different resource (e.g., memory/compute) limits and pricing models across different cloud platforms.